
// self适用于方法，也就是结构体，面向对象编程的省略写法

// 函数的参数只有一个的时候，编译 器是可以推断出来返回值的生命周期的：与参数的生命周期相同
fn elided_input(x: &i32) {
    println!("'elided_input': {}", x);
}

fn annotated_input<'a>(x: &'a i32) {
    println!("'annotated_input': {}", x);
}

fn elided_pass(x: &i32) -> &i32 {
    x
}

fn annotated_pass<'a>(x: &'a i32) -> &'a i32 {
    x
}

fn main() {
    let x = 3;
    elided_input(&x);
    annotated_input(&x);

    println!("'elided_pass': {}", elided_pass(&x));
    println!("'annotated_pass': {}", annotated_pass(&x));
}